HTTP Caching হল একটি প্রক্রিয়া যার মাধ্যমে ওয়েব সার্ভিস, ব্রাউজার বা অন্য কোনো ক্লায়েন্ট ওয়েব পৃষ্ঠার কপি বা অন্যান্য রিসোর্স সংরক্ষণ করে রাখে যাতে পরবর্তী রিকোয়েস্টে সেই ডেটা পুনরায় সার্ভার থেকে না আনা হয়। এটি সার্ভারের লোড কমাতে, ওয়েব পেজ লোডিং টাইম দ্রুত করতে এবং নেটওয়ার্ক ব্যান্ডউইথ সংরক্ষণ করতে সাহায্য করে।
HTTP কেশিংয়ের মাধ্যমে, ক্লায়েন্ট এবং সার্ভার একটি নির্দিষ্ট সময়ের জন্য ডেটা পুনরায় ব্যবহার করতে পারে, ফলে ওভারহেড কমে যায় এবং কর্মক্ষমতা বৃদ্ধি পায়।
HTTP Caching Mechanisms
HTTP কেশিং বেশ কিছু মেকানিজমের মাধ্যমে কাজ করে, যেমন Cache-Control, Expires, ETag, এবং Last-Modified হেডার। নিচে এই কেশিং মেকানিজমগুলি বিস্তারিতভাবে আলোচনা করা হলো:
1. Cache-Control Header
Cache-Control হেডার হল HTTP কেশিংয়ের সবচেয়ে গুরুত্বপূর্ণ অংশ। এটি সার্ভার থেকে ক্লায়েন্টকে নির্দেশ দেয় যে, কেমন করে কেচিং হবে এবং কিভাবে কেচিং ব্যবহার করা উচিত। এই হেডারের মাধ্যমে ক্লায়েন্টের কেচিং আচরণ নিয়ন্ত্রণ করা যায়।
মূল Cache-Control Directives:
- no-cache: ক্লায়েন্টে কেচড কনটেন্ট থাকবে, তবে ব্যবহার করার আগে সার্ভারের সাথে ভ্যালিডেশন করতে হবে।
- no-store: কোনো ডেটা কেচে রাখা যাবে না। এই নির্দেশনা সাধারণত পাসওয়ার্ড বা ব্যক্তিগত ডেটা ট্রান্সফারের জন্য ব্যবহার করা হয়।
- private: ডেটা কেবলমাত্র একক ক্লায়েন্টের জন্য কেচে রাখা হবে এবং এটি শেয়ার করা হবে না।
- public: ডেটা সব ধরনের ক্লায়েন্টের জন্য কেচে রাখা যাবে (যেমন CDN বা প্রক্সি সার্ভার)।
- max-age: ডেটা কেচে রাখার সর্বোচ্চ সময় (সেকেন্ডে)। যেমন,
max-age=3600মানে 1 ঘণ্টা। - s-maxage: এটি
max-ageএর মতোই, তবে এটি শুধুমাত্র শেয়ারড কেচে (যেমন CDN) প্রযোজ্য।
উদাহরণ:
Cache-Control: max-age=3600, public
2. Expires Header
Expires হেডার একটি নির্দিষ্ট সময়ের জন্য কেচিং ইঙ্গিত দেয়, যার পরে ডেটাটি পুরানো মনে করা হবে। এটি Date হেডারের সাহায্যে ক্যালেন্ডার টাইমে সময় নির্ধারণ করে। তবে, Cache-Control হেডারের আবির্ভাবের সাথে Expires হেডারের ব্যবহার কমেছে, কারণ Cache-Control আরও নমনীয় এবং সময় নির্ধারণ করতে সহজ।
উদাহরণ:
Expires: Thu, 01 Dec 2024 16:00:00 GMT
3. ETag (Entity Tag)
ETag একটি শক্তিশালী কেশিং মেকানিজম যা সার্ভারের সাথে কেচড ডেটার সঠিকতা যাচাই করতে ব্যবহৃত হয়। এটি একটি ইউনিক স্ট্রিং যা রিসোর্সের বর্তমান সংস্করণকে নির্দেশ করে। সার্ভার যখন একটি রিসোর্স পরিবর্তন করে, তখন এটি একটি নতুন ETag প্রদান করবে, যা ক্লায়েন্টের কেচের সাথে তুলনা করা যেতে পারে।
কিভাবে ETag কাজ করে:
- ক্লায়েন্ট প্রথমে রিসোর্স রিকোয়েস্ট করে এবং সার্ভার একটি ETag প্রদান করে।
- পরবর্তীতে ক্লায়েন্ট একই রিসোর্স রিকোয়েস্ট করলে, এটি আগের ETagটি পাঠায় সার্ভারে।
- সার্ভার ETag যাচাই করে এবং যদি রিসোর্স অপরিবর্তিত থাকে, তবে 304 Not Modified রেসপন্স পাঠায়, অর্থাৎ ক্লায়েন্টে আগের কেচড ডেটা ব্যবহার করা যাবে।
উদাহরণ:
ETag: "686897696a7c876b7e"
4. Last-Modified Header
Last-Modified হেডার সার্ভারের রিসোর্সের সর্বশেষ পরিবর্তনের সময় নির্ধারণ করে। ক্লায়েন্ট যখন একটি রিসোর্স রিকোয়েস্ট করে, তখন সার্ভার এটি ক্লায়েন্টকে জানায়। পরবর্তীতে, ক্লায়েন্ট If-Modified-Since হেডারের মাধ্যমে জানায় যে, এটি কেবলমাত্র সেই রিসোর্স রিকোয়েস্ট করবে যদি এটি নির্দিষ্ট সময়ের পর পরিবর্তিত হয়।
কিভাবে Last-Modified কাজ করে:
- ক্লায়েন্ট প্রথম রিকোয়েস্ট করার সময়, সার্ভার Last-Modified হেডার পাঠায়।
- পরবর্তী রিকোয়েস্টে ক্লায়েন্ট
If-Modified-Sinceহেডার পাঠায়, যাতে সার্ভার জানাতে পারে যে, রিসোর্সটি শেষবার কবে পরিবর্তিত হয়েছে। - যদি রিসোর্সটি পরিবর্তিত না হয়, সার্ভার 304 Not Modified রেসপন্স পাঠায়।
উদাহরণ:
Last-Modified: Wed, 21 Oct 2020 07:28:00 GMT
5. Vary Header
Vary হেডার সার্ভারকে বলে যে, কেচিং সিদ্ধান্ত নেওয়ার জন্য কোন হেডার বা বৈশিষ্ট্য গুলি ব্যবহার করতে হবে। এটি সাধারণত User-Agent, Accept-Encoding, বা অন্যান্য কন্টেন্ট হেডার অনুযায়ী কেচিং পরিচালনা করতে ব্যবহৃত হয়।
উদাহরণ:
Vary: Accept-Encoding
এটি নির্দেশ দেয় যে, কেচিংয়ের সিদ্ধান্ত Accept-Encoding হেডারের উপর নির্ভর করবে, অর্থাৎ কম্প্রেসড বা আনকম্প্রেসড কন্টেন্ট কেচে রাখা হবে।
6. Cache Invalidation
কেচে রাখা ডেটা কখনও কখনও invalidate বা অকার্যকর হতে পারে, যেমন:
- যখন রিসোর্স পরিবর্তিত হয়।
- যখন নির্দিষ্ট সময় সীমা অতিক্রম করে।
এটি নিশ্চিত করার জন্য Cache-Control, ETag, এবং Expires হেডারগুলো সঠিকভাবে ব্যবহৃত হতে হয়।
সারাংশ
HTTP কেশিং মেকানিজম হল ওয়েব পারফরম্যান্সের উন্নতিতে সহায়ক একটি শক্তিশালী পদ্ধতি, যা সার্ভারের লোড কমাতে এবং ওয়েব পেজ লোড টাইম দ্রুত করতে সাহায্য করে। প্রধান কেশিং হেডারগুলি যেমন Cache-Control, Expires, ETag, এবং Last-Modified ব্যবহার করে, ওয়েব অ্যাপ্লিকেশনগুলি ডেটার নিরাপত্তা এবং কার্যকারিতা বজায় রাখার পাশাপাশি কেচিং পরিচালনা করতে পারে। HTTP কেশিং যখন সঠিকভাবে ব্যবহৃত হয়, তখন এটি ব্যবহারকারীর অভিজ্ঞতাকে অনেক উন্নত করতে পারে এবং সার্ভারের প্রতি চাপ কমিয়ে দেয়।
Read more